package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.*;
import cn.wolfcode.trip.base.query.friend.FriendLoopQuery;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface IFriendService {
    void addFriend(Friend friend);

    PageInfo getFriendLoop(FriendLoopQuery qo);

    PageInfo getAttentionFriendLoop(FriendLoopQuery qo);

    /**
     * 获得好友列表中的组列表
     * @param id 用户id
     * @return
     */
    List<Group> getGroupByUserId(Long id);

    /**
     * 由组id查询好友id
     * @param parentId
     * @return
     */
    List<Friend> getFriendByGroupId(Long parentId);

    /**
     * 增加分组
     * @param group
     */
    void addGroup(Group group);

    /**
     * 将好友移动组别
     * @param groupId
     * @param friendId
     * @param userId
     */
    void moveGroup(Long groupId, Long friendId, Long userId);

    /**
     * 删好友
     * @param userId
     * @param friendId
     */
    void deleteFriend(Long userId, Long friendId);

    /**
     * 增加群
     * @param crowd
     */
    void addCrowd(Crowd crowd);

    /**
     * 根据用户id查询其所在的群
     * @param id
     * @return
     */
    List<Crowd> getListForCrowds(Long id);

    /**
     * 通过群id获取群成员的信息
     * @param id
     * @return
     */
    List<User> getFriendByCrowd(Long id);

    /**
     * 通过群id查询群信息
     * @param id 群id
     * @return
     */
    Crowd getCrowdById(Long id);

    /**
     * 添加群关系
     * @param crowdId 群id
     * @param userId 用户id
     */
    void saveCrowdRelation(Long crowdId, Long userId);

    /**
     * 删除群与成员的关系
     * @param crowdId
     * @param userId
     */
    void deleteCrowdRelation(Long crowdId, Long userId);
}
